import pandas as pd
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False

# 导入数据
data = pd.read_excel('第二章 图表(前15).xlsx', sheet_name='10 甘特图', usecols='B:G', skiprows=2)

# 绘制甘特图
fig, ax = plt.subplots(figsize=(10, 6))

# 将日期字符串转换为日期对象
data['开始日期'] = pd.to_datetime(data['开始日期'])
data['结束日期'] = pd.to_datetime(data['结束日期'])
data['项目天数'] = data['项目天数']

# 绘制甘特图
ax.barh(data['项目名称'], data['项目天数'], left=data['开始日期'])
ax.barh(data['项目名称'], data['进行天数'], left=data['开始日期'], color='skyblue')

# 在柱子中输出完成度的值
for index, row in data.iterrows():
    x = row['开始日期'] + pd.Timedelta(days=row['进行天数'])
    y = index
    ax.text(x, y, f"{row['完成度'] * 100:.0f}%", ha='center', va='center', color='white')

# 设置图表标题和标签
ax.set_title('项目甘特图')
ax.set_xlabel('日期')
ax.set_ylabel('项目名称')

# 导出图片
#plt.savefig('D:/python charm/01/可视化/第二章/图片/甘特图.png', dpi=300, bbox_inches='tight')

# 显示图表
plt.show()